<?php
	class LoginHandler{
		
		// Privata variabel för sessionsvariabeln
		private $status = "status";
		private $userName = "userName";
		private $m_db = null;
		//Funktion för att kolla om användare är inloggad
		//Retunerar true om man är, annars false
		
	
		public function __construct(Database $db) {
			$this->m_db =$db;
		}
		public function IsLoggedIn(){
			
			// om sessionsvariabeln är true, så är man inloggad. 
			if(isset($_SESSION[$this->status])){
				return true;
			}
			else{
				return false;
			}
		}
		
		public function Login($name, $pass){
			$sqlQuery = "SELECT * FROM login WHERE name = ? AND pass = ?";
			
			$stmt = $this->m_db->Prepare($sqlQuery);
			
			$stmt->bind_param('ss', $name, $pass);
			
			if($this->m_db->execute($stmt) === 1){
				$_SESSION[$this->status] = true;
				$_SESSION[$this->userName] = $name;
				return true;
			}
			return false;		
			
		}
		// Funktion som gör så att man loggas ut
		// Gör så att DoLogin() blir false
		public function DoLogout(){
			// Om session är true, eller är satt så unsettar man sessionen, då blir man utloggad. 
  				unset($_SESSION[$this->status]);
		}
		
		public function GetLoggedInUserName() {
			return $_SESSION[$this->userName];
		}
		
		// Funktion som testar alla fuktioner
		// Testar alla metoder/fuktioner
		public function Test(){
			
			// Utloggad
			$this->DoLogout();
			// Detta borde bli false då jag loggade ut.
			if ($this->IsLoggedIn() === true) {
				print("Fel i Inloggningen - jag är inloggad när jag inte borde vara det.");
				return false;
			}
			// Detta borde bli false då namnet och lösenordet inte stämmer
			if ($this->DoLogin("Kanin", "hemligt") === true) {
				print( "Nu vart det nå fel då jag kom in med fel uppgifter");
				return false;
			}
			// Detta borde bli true då namn och lösenord stämmer
			if($this->DoLogin("a", "s") === false){
				print( "Nu vart det nå fel då jag skrev in rätt uppgifter och retunera false");
				return false;
			}
			// Man borde va inloggad då namnet och lösenordet stämmer, så om man inte är de, returnar det false
			if($this->IsLoggedIn() === false){
				print( "Nu vart det nå fel då jag bör vara inloggad");
				return false;
			}
			// Utloggad
			$this->DoLogout();
			
			if ($this->IsLoggedIn() === true) {
			print("Fel i Inloggningen - jag är inloggad när jag inte borde vara det.");
			return false;
			}
			// Testar med rätt användarnamn men fel lösenord, borde bli false ändå. 
			if($this->DoLogin("Tomas", "senap") === true){
				print( "Nu blev det nå fel då rätt användarnamn gavs men ej lösenord");
				return false;
			}
			// Annars ska allt stämma. 
			return true;
			
			
		}

	}
?>